blob: 13ee65fdcb7379dd92b210cf2f2a11a726dd1793 [file] [log] [blame]
Logan Chien1da651f2011-05-12 03:13:53 +08001COMMON_CFLAGS = ['-Wall', '-Werror']
2COMMON_CXXFLAGS = ['-Wall', '-Werror']
TDYa12709407ad2011-05-10 20:44:53 +08003
Logan Chien1da651f2011-05-12 03:13:53 +08004build_configurations = {
5 'debug': {
6 'CFLAGS': COMMON_CFLAGS + ['-g'],
7 'CXXFLAGS': COMMON_CXXFLAGS + ['-g']
8 },
9
10 'release': {
11 'CFLAGS': COMMON_CFLAGS + ['-O2'],
12 'CXXFLAGS': COMMON_CXXFLAGS + ['-O2', '-fno-exceptions']
13 # FIXME: We should move -fno-exceptions to COMMON_CXXFLAGS.
14 },
15}
16
Logan Chien594fa132011-05-19 05:21:47 +080017toolkits = {
18 'gcc': {
19 'CC': 'gcc',
20 'CXX': 'g++',
21 },
22
23 'clang': {
24 'CC': 'clang',
25 'CXX': 'clang++',
26 },
27}
28
Logan Chien1da651f2011-05-12 03:13:53 +080029mode = ARGUMENTS.get('mode', 'release')
Logan Chien594fa132011-05-19 05:21:47 +080030toolkit = ARGUMENTS.get('toolkit', 'gcc')
Logan Chien1da651f2011-05-12 03:13:53 +080031
32if not mode in build_configurations:
33 print 'ERROR: Unknown building mode:', mode
TDYa12709407ad2011-05-10 20:44:53 +080034 Exit(1)
35
Logan Chien1da651f2011-05-12 03:13:53 +080036build_config = build_configurations[mode]
Logan Chien594fa132011-05-19 05:21:47 +080037build_toolkit = toolkits[toolkit]
TDYa12709407ad2011-05-10 20:44:53 +080038
Logan Chien1da651f2011-05-12 03:13:53 +080039print '===> BUILDING IN ' + mode.upper() + ' MODE ...'
TDYa12709407ad2011-05-10 20:44:53 +080040
Logan Chien594fa132011-05-19 05:21:47 +080041import os
42
TDYa127ae4b3122011-05-23 23:05:35 +080043c_include_path = os.environ['C_INCLUDE_PATH'] if 'C_INCLUDE_PATH' in os.environ else '';
44cplus_include_path = os.environ['CPLUS_INCLUDE_PATH'] if 'CPLUS_INCLUDE_PATH' in os.environ else '';
45
46
Logan Chien594fa132011-05-19 05:21:47 +080047env = Environment(CC=build_toolkit['CC'],
48 CXX=build_toolkit['CXX'],
49 CFLAGS=build_config['CFLAGS'],
Logan Chien1da651f2011-05-12 03:13:53 +080050 CXXFLAGS=build_config['CXXFLAGS'],
Logan Chien594fa132011-05-19 05:21:47 +080051 CPPPATH=['utils'],
TDYa127e4ad0b92011-05-23 09:52:13 +080052 ENV = {'PATH' : os.environ['PATH'],
TDYa127ae4b3122011-05-23 23:05:35 +080053 'C_INCLUDE_PATH' : c_include_path,
54 'CPLUS_INCLUDE_PATH' : cplus_include_path})
Logan Chienb10ad582011-05-05 01:14:08 +080055
56env.Program('elfreader',
Logan Chien88f7f152011-05-18 22:31:09 +080057 source=['ELFHeader.cpp',
Logan Chien61dfca92011-05-19 05:06:11 +080058 'ELFSectionHeader.cpp',
TDYa1271e278e22011-05-22 09:34:16 +080059 'ELFSectionSymTabEntry.cpp',
Logan Chien88f7f152011-05-18 22:31:09 +080060 'ELFTypes.cpp',
Logan Chienb10ad582011-05-05 01:14:08 +080061 'main.cpp',
Logan Chienb10ad582011-05-05 01:14:08 +080062 'utils/helper.cpp',
63 'utils/term.cpp'])